package com.zwf.langchain4j.tools;

import dev.langchain4j.agent.tool.P;
import dev.langchain4j.agent.tool.Tool;
import org.springframework.stereotype.Component;

/**
 * 计算器工具类
 * 大语言模型不擅长应付数学计算，在遇到数学计算时，他会自己考虑需不需要调用工具类来解决问题。
 */
@Component
public class CalculatorTools {

    // 大语言模型根据工具的不同，即使没有任何描述，也可以很好的理解它，但有些时候工具的逻辑会很复杂，最好还是由我们详细描述
    // @Tool用于描述工具的名称和详细信息
    // @P描述工具的参数
    @Tool(name = "加法", value = "将两个参数a和b相加并返回运算结果")
    double sum(@P(value = "加数1") double a, @P(value = "加数2") double b) {
        System.out.println("调用加法运算");
        return a + b;
    }

    @Tool(name = "平方根", value = "返回给定参数的平方根")
    double squareRoot(double x) {
        System.out.println("调用平方根运算");
        return Math.sqrt(x);
    }

}
